﻿using System;
using System.ServiceModel;

using OCXS.OCXSServiceLibrary.Administration;

namespace OCXS.OCXSServiceLibrary {

    /// <summary>
    /// Interface for OCXS Administration service methods
    /// </summary>
    [ServiceContract(Namespace = "http://OCXS.org/Administration/")]
    public interface IOCXSAdministration {

        /// <summary>
        /// Manages variable fetching from the server.
        /// </summary>
        /// <param name="request">Request object.</param>
        /// <returns>A container of server variables</returns>
        [OperationContract(Action = "http://OCXS.org/Administration/UpdateVariables")]
        UpdateVariablesResponse UpdateVariables(UpdateVariablesRequest request);

        /// <summary>
        /// Manages subscription fetching from the server.
        /// </summary>
        /// <param name="request">Request object.</param>
        /// <returns>A container of subscriptions.</returns>
        [OperationContract(Action = "http://OCXS.org/Administration/UpdateSubscriptions")]
        UpdateSubscriptionsResponse UpdateSubscriptions(UpdateSubscriptionRequest request);

        /// <summary>
        /// Manages server status information fetching from the server.
        /// </summary>
        /// <param name="request">Request object.</param>
        /// <returns>Server status information.</returns>
        [OperationContract(Action = "http://OCXS.org/Administration/UpdateServerStatus")]
        UpdateServerStatusResponse UpdateServerStatus(UpdateServerStatusRequest request);

    } /* IOCXSAdministration */

} /* OCXS.OCXSServiceLibrary */
